1. Les tableaux

Les tableau sont ce qu'on appelle une structure de données. Ils permettent de stocker des informations.

Les tableaux sont des structures de données pouvant contenir plusieurs valeurs qui partagent toutes le même type.

Création d'un tableau

Je peux déclarer et initialiser un tableau pouvant contenir par exemple 3 valeurs de type int :

int[] array = new int[3];

Comme vu dans le cours sur les variables je peux déclarer et initialiser un tableau sur une seule ligne. Ce qui permet de définir que c'est un tableau ce sont les crochets [] juste après le type.
int[] signifie donc un tableau d'int. On pourrait imaginer un tableau de n'importe quoi, comme un tableau de String en le déclarant comme String[]. Ici notre tableau s'appelle array ​.

Ici, pour initialiser la valeur ça rappelle un peu la création d'instance d'une classe comme vu à la section précédente : le new int[3] est effectivement un appel au constructeur du tableau !
Les tableaux ne sont pas des types primitifs. Ils sont considérés comme des objets. Comme pout tous les types objets, pour initialiser la variable je dois utiliser le mot clé new.
Ici, je dois aussi préciser la capacité de stockage du tableau entre les crochets de l'initialisation int[3].

Quand je crée un tableau, il est initialisé avec toutes ses valeurs par défaut. Comme ce tableau contient des int, toutes ses cases sont initialisées à 0 :

Index 0 1 2
Valeur 0 0 0

L'index correspond à la position de la case dans le tableau. On commence à compter à partir de 0, puis 1, 2, etc... C'est un coup à prendre mais on s'y fait au bout d'un moment. (Maintenant vous savez pourquoi je vous ai fait faire une boucle for qui commence à compter à partir de 0 dans le chapitre dédié aux boucles héhé...)

Initialisation à la création

On peut aussi créer un tableau avec des valeurs déjà initialisées avec une syntaxe sympa :

int[] array = new int[] {4, 2, 1};

Ici je n'ai plus besoin de préciser la capacité du tableau, Java est assez malin pour voir qu'il n'y a que 3 valeurs dans les accolades !

Index 0 1 2
Valeur 4 2 1

Manipulation

Alors on en fait quoi de ce tableau ? Eh bien on peut écrire des valeurs dans les cases ! Et comment on fait ça ? Bah en accédant aux cases avec array[0], array[1] et array[2] !

Je peux stocker 3 entiers dans ce tableau. Voilà comment je veux l'organiser :

array[0] = 4;
array[1] = 2;
array[2] = 1;

IO.println(array[1]); // affiche 2

Exercice

Allez, un petit exercice pour vous !

Écrivez un programme capable de faire la somme de toutes les valeurs du tableau précédemment créé et de l'afficher dans la console. Souvenez-vous que pour afficher quelque chose dans la console, on peut utiliser IO.println() !

Indice 1 : Ce n'est pas pour rien si je vous ai rappelé l'existence des boucles juste au dessus !
Indice 2 : Vous pouvez utiliser une variable de type int dans les crochets du tableau array[indexVariable]
Indice 3 : Vous pouvez créer une variable supplémentaire pour stocker le résultat

Solution

Allez je suis sympa, je vous partage ma solution. Mais ne la regardez que si vous avez réussi de votre côté, ou alors si vous ne comprenez vraiment pas ce qu'il se passe !

void main() {
  int[] array = new int[] {4, 2, 1};

  int total = 0; // cette variable va me permettre de stocker le résultat

  for (int i = 0; i < 3; i++) {
    total += array[i]; // je fais la somme de toutes les valeurs du tableau ici
  }

  IO.println(total);
}

Ici, je crée une variable total qui va accumuler la somme des valeurs à chaque tour de la boucle. La boucle va tourner 3 fois. Une fois pour chaque case du tableau, que je vais récupérer grâce à la valeur du compteur i qui s'incrémente à chaque tour de la boucle.
Si vous ne vous souvenez plus de ce que veut dire l'opérateur +=, retournez faire un tour dans le chapitre dédié aux opérateurs arithmétiques. Il permet d'assigner à une variable la somme de sa valeur et de l'opérande donné.

Bonus

Comme les tableaux sont des objets, je peux accéder à des données les concernant !
Par exemple, une instance de tableau contient aussi sa propre taille, que l'on peut utiliser avec array.length ​. C'est un accès à l'attribut int length ​ de l'instance.
Ainsi, je peux écrire for (int i = 0; i < array.length; i++) !
C'est pratique comme ça vous pouvez écrire un programme qui fonctionne peu importe la taille du tableau !

Erreur possible

D'ailleurs, avez-vous rencontré l'erreur Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3 pendant votre exercice ?
Si oui, vous avez fait l'erreur d'essayer d'accéder à une case du tableau qui n'existe pas ! Ça arrive même aux meilleurs, il faut bien se tromper de temps en temps pour apprendre !

Allez, je vous montre ce qui ne va pas :

int[] array = new int[3];  

array[0] = 1;  
array[1] = 2;  
array[2] = 4;

IO.println(array[3]); // BOOM ! Erreur ici !

/*
l'indice 3 n'existe pas dans un tableau de 3 cases
souvenez vous, on commence à compter à partir de 0
donc on va jusqu'à 2 maximum !
*/

Il faut donc faire attention aux valeurs de notre variable dans la boucle for !

À savoir !

Cette erreur est valable si vous tentez d'accéder à un index négatif, supérieur ou égal à la capacité du tableau !

Bon, les tableaux sont déjà sympas pour stocker des quantités de données, mais je fais comment si j'ai besoin d'un usage plus poussé ? Eh bien on fait comme tout le monde, on utilise les collections !